package com.nenude.corejava.ch12;

import java.io.File;

/**
 * 编写一个程序能够在指定目录下查找文件或目录
 * 
 * @author admin
 *
 */
public class FileFinder {
	/**
	 * 编写一个方法，查询指定目录下的文件，找到后返回文件的全路径（绝对路径）
	 * 
	 * @param basePath
	 * @param fileName
	 * @return
	 */

	/**
	 * 编写一个方法，查询指定目录下的文件，找到后返回文件的全路径(绝对路径)
	 * 
	 * @param basePath
	 * @param fileName
	 * @return
	 */
	public String find(String basePath, String fileName) {
		if (basePath == null || fileName == null) {// 没传参数或参数为null，不执行查询
			return null;
		}
		File base = new File(basePath);
		File[] files =  base.listFiles();//列出参考目录下的所有文件或目录
		if(files!=null) {
			for(File file : files) {
				if(file.isFile()) {
					String fn = file.getName();
					if(fileName.equals(fn)) {//找到匹配的文件
						return file.getAbsolutePath();//返回文件的全路径
					}
				}else {
					System.out.println("不是文件:  "+ file.getAbsolutePath());
					String f =  find(file.getAbsolutePath(),fileName);//递归调用
					if(f!=null) {//递归中断条件
						return f;
					}
				}
			}
		}
		return null;
	}
	
	public static void main(String[] args) {

		String pathString = "D:\\";
		String file = "Triangle.java";
		long start = System.currentTimeMillis();    
		System.out.println("正在搜索文件... ... ");
		FileFinder fileFinder = new FileFinder();
		//匿名对象
		String result= null;
		result  = new FileFinder().find(pathString, file);
		if(result!=null) {
			System.out.println("找到一个文件："+result);
		}else {
			System.out.println("找不到文件！");
		}
		long stop = System.currentTimeMillis();
		System.out.println("执行时长(秒)： "+(stop-start)/1000);
	
		//查询出系统的所有盘符，进行全盘搜索
		 start = System.currentTimeMillis(); 
		// System.out.println("正在全盘搜索文件... ... ");
		//File[] roots =  File.listRoots();//查询系统的所有根目录
		/*for(File file2 : roots) {
			System.out.println(file2.getAbsolutePath());
			result  = new FileFinder().find(file2.getAbsolutePath(), "chensw.jks");
		}*/
		stop = System.currentTimeMillis();
		System.out.println("执行时长(秒)： "+(stop-start)/1000);
		
	}

}
